package Demo1;

/**
 * 抽象类
 */
abstract class  Shape {
    //abstract private void show();
    //内部类是不允许被 private 修饰的 （内部类是为了继承的 要是封装起来就没办法继承了）
    // 编译出错
    //Error:(4, 27) java: 非法的修饰符组合: abstract和private
        void func() {
        System.out.println("func");
    }
}
//抽象类中可以包含其他的非抽象方法, 也可以包含字段. 这个非抽象方法和普通方法的规则都是一样的, 可以被重写,
//也可以被子类直接调用
class Rect extends Shape {
    @Override
    void func() {//重写
        System.out.println("func2");
    }
}
public class Demo {
    public static void main(String[] args) {
        Shape shape = new Rect();
        shape.func();


//        Demo1.Shape shape = new Demo1.Shape();
//        // 编译出错
//        Error:(30, 23) java: Shape是抽象的; 无法实例化
    }
}
